﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Emulator.Base.CPU;
using Emulator.GameBoy.CPU.Instructions;

namespace Emulator.GameBoyConfig
{ 
	public class InstructionMapper
	{
		public static Dictionary<byte,CPUInstructionBase> SinglOpCodeConfig = new Dictionary<byte,CPUInstructionBase>();
		public static Dictionary<byte, CPUInstructionBase> MultipleOpCodeConfig = new Dictionary<byte,CPUInstructionBase>();
		static InstructionMapper(){
	SinglOpCodeConfig.Add(0x00,new NOP00Instruction(){OpCode="00", Symble="NOP", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x01,new LD01Instruction(){OpCode="01", Symble="LD", Operand= "BC,d16",Length=3 });
							SinglOpCodeConfig.Add(0x02,new LD02Instruction(){OpCode="02", Symble="LD", Operand= "(BC),A",Length=1 });
							SinglOpCodeConfig.Add(0x03,new INC03Instruction(){OpCode="03", Symble="INC", Operand= "BC",Length=1 });
							SinglOpCodeConfig.Add(0x04,new INC04Instruction(){OpCode="04", Symble="INC", Operand= "B",Length=1 });
							SinglOpCodeConfig.Add(0x05,new DEC05Instruction(){OpCode="05", Symble="DEC", Operand= "B",Length=1 });
							SinglOpCodeConfig.Add(0x06,new LD06Instruction(){OpCode="06", Symble="LD", Operand= "B,d8",Length=2 });
							SinglOpCodeConfig.Add(0x07,new RLCA07Instruction(){OpCode="07", Symble="RLCA", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x08,new LD08Instruction(){OpCode="08", Symble="LD", Operand= "(a16),SP",Length=3 });
							SinglOpCodeConfig.Add(0x09,new ADD09Instruction(){OpCode="09", Symble="ADD", Operand= "HL,BC",Length=1 });
							SinglOpCodeConfig.Add(0x0A,new LD0AInstruction(){OpCode="0A", Symble="LD", Operand= "A,(BC)",Length=1 });
							SinglOpCodeConfig.Add(0x0B,new DEC0BInstruction(){OpCode="0B", Symble="DEC", Operand= "BC",Length=1 });
							SinglOpCodeConfig.Add(0x0C,new INC0CInstruction(){OpCode="0C", Symble="INC", Operand= "C",Length=1 });
							SinglOpCodeConfig.Add(0x0D,new DEC0DInstruction(){OpCode="0D", Symble="DEC", Operand= "C",Length=1 });
							SinglOpCodeConfig.Add(0x0E,new LD0EInstruction(){OpCode="0E", Symble="LD", Operand= "C,d8",Length=2 });
							SinglOpCodeConfig.Add(0x0F,new RRCA0FInstruction(){OpCode="0F", Symble="RRCA", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x10,new STOP10Instruction(){OpCode="10", Symble="STOP", Operand= "0",Length=2 });
							SinglOpCodeConfig.Add(0x11,new LD11Instruction(){OpCode="11", Symble="LD", Operand= "DE,d16",Length=3 });
							SinglOpCodeConfig.Add(0x12,new LD12Instruction(){OpCode="12", Symble="LD", Operand= "(DE),A",Length=1 });
							SinglOpCodeConfig.Add(0x13,new INC13Instruction(){OpCode="13", Symble="INC", Operand= "DE",Length=1 });
							SinglOpCodeConfig.Add(0x14,new INC14Instruction(){OpCode="14", Symble="INC", Operand= "D",Length=1 });
							SinglOpCodeConfig.Add(0x15,new DEC15Instruction(){OpCode="15", Symble="DEC", Operand= "D",Length=1 });
							SinglOpCodeConfig.Add(0x16,new LD16Instruction(){OpCode="16", Symble="LD", Operand= "D,d8",Length=2 });
							SinglOpCodeConfig.Add(0x17,new RLA17Instruction(){OpCode="17", Symble="RLA", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x18,new JR18Instruction(){OpCode="18", Symble="JR", Operand= "r8",Length=2 });
							SinglOpCodeConfig.Add(0x19,new ADD19Instruction(){OpCode="19", Symble="ADD", Operand= "HL,DE",Length=1 });
							SinglOpCodeConfig.Add(0x1A,new LD1AInstruction(){OpCode="1A", Symble="LD", Operand= "A,(DE)",Length=1 });
							SinglOpCodeConfig.Add(0x1B,new DEC1BInstruction(){OpCode="1B", Symble="DEC", Operand= "DE",Length=1 });
							SinglOpCodeConfig.Add(0x1C,new INC1CInstruction(){OpCode="1C", Symble="INC", Operand= "E",Length=1 });
							SinglOpCodeConfig.Add(0x1D,new DEC1DInstruction(){OpCode="1D", Symble="DEC", Operand= "E",Length=1 });
							SinglOpCodeConfig.Add(0x1E,new LD1EInstruction(){OpCode="1E", Symble="LD", Operand= "E,d8",Length=2 });
							SinglOpCodeConfig.Add(0x1F,new RRA1FInstruction(){OpCode="1F", Symble="RRA", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x20,new JR20Instruction(){OpCode="20", Symble="JR", Operand= "NZ,r8",Length=2 });
							SinglOpCodeConfig.Add(0x21,new LD21Instruction(){OpCode="21", Symble="LD", Operand= "HL,d16",Length=3 });
							SinglOpCodeConfig.Add(0x22,new LD22Instruction(){OpCode="22", Symble="LD", Operand= "(HL+),A",Length=1 });
							SinglOpCodeConfig.Add(0x23,new INC23Instruction(){OpCode="23", Symble="INC", Operand= "HL",Length=1 });
							SinglOpCodeConfig.Add(0x24,new INC24Instruction(){OpCode="24", Symble="INC", Operand= "H",Length=1 });
							SinglOpCodeConfig.Add(0x25,new DEC25Instruction(){OpCode="25", Symble="DEC", Operand= "H",Length=1 });
							SinglOpCodeConfig.Add(0x26,new LD26Instruction(){OpCode="26", Symble="LD", Operand= "H,d8",Length=2 });
							SinglOpCodeConfig.Add(0x27,new DAA27Instruction(){OpCode="27", Symble="DAA", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x28,new JR28Instruction(){OpCode="28", Symble="JR", Operand= "Z,r8",Length=2 });
							SinglOpCodeConfig.Add(0x29,new ADD29Instruction(){OpCode="29", Symble="ADD", Operand= "HL,HL",Length=1 });
							SinglOpCodeConfig.Add(0x2A,new LD2AInstruction(){OpCode="2A", Symble="LD", Operand= "A,(HL+)",Length=1 });
							SinglOpCodeConfig.Add(0x2B,new DEC2BInstruction(){OpCode="2B", Symble="DEC", Operand= "HL",Length=1 });
							SinglOpCodeConfig.Add(0x2C,new INC2CInstruction(){OpCode="2C", Symble="INC", Operand= "L",Length=1 });
							SinglOpCodeConfig.Add(0x2D,new DEC2DInstruction(){OpCode="2D", Symble="DEC", Operand= "L",Length=1 });
							SinglOpCodeConfig.Add(0x2E,new LD2EInstruction(){OpCode="2E", Symble="LD", Operand= "L,d8",Length=2 });
							SinglOpCodeConfig.Add(0x2F,new CPL2FInstruction(){OpCode="2F", Symble="CPL", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x30,new JR30Instruction(){OpCode="30", Symble="JR", Operand= "NC,r8",Length=2 });
							SinglOpCodeConfig.Add(0x31,new LD31Instruction(){OpCode="31", Symble="LD", Operand= "SP,d16",Length=3 });
							SinglOpCodeConfig.Add(0x32,new LD32Instruction(){OpCode="32", Symble="LD", Operand= "(HL-),A",Length=1 });
							SinglOpCodeConfig.Add(0x33,new INC33Instruction(){OpCode="33", Symble="INC", Operand= "SP",Length=1 });
							SinglOpCodeConfig.Add(0x34,new INC34Instruction(){OpCode="34", Symble="INC", Operand= "(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x35,new DEC35Instruction(){OpCode="35", Symble="DEC", Operand= "(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x36,new LD36Instruction(){OpCode="36", Symble="LD", Operand= "(HL),d8",Length=2 });
							SinglOpCodeConfig.Add(0x37,new SCF37Instruction(){OpCode="37", Symble="SCF", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x38,new JR38Instruction(){OpCode="38", Symble="JR", Operand= "C,r8",Length=2 });
							SinglOpCodeConfig.Add(0x39,new ADD39Instruction(){OpCode="39", Symble="ADD", Operand= "HL,SP",Length=1 });
							SinglOpCodeConfig.Add(0x3A,new LD3AInstruction(){OpCode="3A", Symble="LD", Operand= "A,(HL-)",Length=1 });
							SinglOpCodeConfig.Add(0x3B,new DEC3BInstruction(){OpCode="3B", Symble="DEC", Operand= "SP",Length=1 });
							SinglOpCodeConfig.Add(0x3C,new INC3CInstruction(){OpCode="3C", Symble="INC", Operand= "A",Length=1 });
							SinglOpCodeConfig.Add(0x3D,new DEC3DInstruction(){OpCode="3D", Symble="DEC", Operand= "A",Length=1 });
							SinglOpCodeConfig.Add(0x3E,new LD3EInstruction(){OpCode="3E", Symble="LD", Operand= "A,d8",Length=2 });
							SinglOpCodeConfig.Add(0x3F,new CCF3FInstruction(){OpCode="3F", Symble="CCF", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x40,new LD40Instruction(){OpCode="40", Symble="LD", Operand= "B,B",Length=1 });
							SinglOpCodeConfig.Add(0x41,new LD41Instruction(){OpCode="41", Symble="LD", Operand= "B,C",Length=1 });
							SinglOpCodeConfig.Add(0x42,new LD42Instruction(){OpCode="42", Symble="LD", Operand= "B,D",Length=1 });
							SinglOpCodeConfig.Add(0x43,new LD43Instruction(){OpCode="43", Symble="LD", Operand= "B,E",Length=1 });
							SinglOpCodeConfig.Add(0x44,new LD44Instruction(){OpCode="44", Symble="LD", Operand= "B,H",Length=1 });
							SinglOpCodeConfig.Add(0x45,new LD45Instruction(){OpCode="45", Symble="LD", Operand= "B,L",Length=1 });
							SinglOpCodeConfig.Add(0x46,new LD46Instruction(){OpCode="46", Symble="LD", Operand= "B,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x47,new LD47Instruction(){OpCode="47", Symble="LD", Operand= "B,A",Length=1 });
							SinglOpCodeConfig.Add(0x48,new LD48Instruction(){OpCode="48", Symble="LD", Operand= "C,B",Length=1 });
							SinglOpCodeConfig.Add(0x49,new LD49Instruction(){OpCode="49", Symble="LD", Operand= "C,C",Length=1 });
							SinglOpCodeConfig.Add(0x4A,new LD4AInstruction(){OpCode="4A", Symble="LD", Operand= "C,D",Length=1 });
							SinglOpCodeConfig.Add(0x4B,new LD4BInstruction(){OpCode="4B", Symble="LD", Operand= "C,E",Length=1 });
							SinglOpCodeConfig.Add(0x4C,new LD4CInstruction(){OpCode="4C", Symble="LD", Operand= "C,H",Length=1 });
							SinglOpCodeConfig.Add(0x4D,new LD4DInstruction(){OpCode="4D", Symble="LD", Operand= "C,L",Length=1 });
							SinglOpCodeConfig.Add(0x4E,new LD4EInstruction(){OpCode="4E", Symble="LD", Operand= "C,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x4F,new LD4FInstruction(){OpCode="4F", Symble="LD", Operand= "C,A",Length=1 });
							SinglOpCodeConfig.Add(0x50,new LD50Instruction(){OpCode="50", Symble="LD", Operand= "D,B",Length=1 });
							SinglOpCodeConfig.Add(0x51,new LD51Instruction(){OpCode="51", Symble="LD", Operand= "D,C",Length=1 });
							SinglOpCodeConfig.Add(0x52,new LD52Instruction(){OpCode="52", Symble="LD", Operand= "D,D",Length=1 });
							SinglOpCodeConfig.Add(0x53,new LD53Instruction(){OpCode="53", Symble="LD", Operand= "D,E",Length=1 });
							SinglOpCodeConfig.Add(0x54,new LD54Instruction(){OpCode="54", Symble="LD", Operand= "D,H",Length=1 });
							SinglOpCodeConfig.Add(0x55,new LD55Instruction(){OpCode="55", Symble="LD", Operand= "D,L",Length=1 });
							SinglOpCodeConfig.Add(0x56,new LD56Instruction(){OpCode="56", Symble="LD", Operand= "D,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x57,new LD57Instruction(){OpCode="57", Symble="LD", Operand= "D,A",Length=1 });
							SinglOpCodeConfig.Add(0x58,new LD58Instruction(){OpCode="58", Symble="LD", Operand= "E,B",Length=1 });
							SinglOpCodeConfig.Add(0x59,new LD59Instruction(){OpCode="59", Symble="LD", Operand= "E,C",Length=1 });
							SinglOpCodeConfig.Add(0x5A,new LD5AInstruction(){OpCode="5A", Symble="LD", Operand= "E,D",Length=1 });
							SinglOpCodeConfig.Add(0x5B,new LD5BInstruction(){OpCode="5B", Symble="LD", Operand= "E,E",Length=1 });
							SinglOpCodeConfig.Add(0x5C,new LD5CInstruction(){OpCode="5C", Symble="LD", Operand= "E,H",Length=1 });
							SinglOpCodeConfig.Add(0x5D,new LD5DInstruction(){OpCode="5D", Symble="LD", Operand= "E,L",Length=1 });
							SinglOpCodeConfig.Add(0x5E,new LD5EInstruction(){OpCode="5E", Symble="LD", Operand= "E,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x5F,new LD5FInstruction(){OpCode="5F", Symble="LD", Operand= "E,A",Length=1 });
							SinglOpCodeConfig.Add(0x60,new LD60Instruction(){OpCode="60", Symble="LD", Operand= "H,B",Length=1 });
							SinglOpCodeConfig.Add(0x61,new LD61Instruction(){OpCode="61", Symble="LD", Operand= "H,C",Length=1 });
							SinglOpCodeConfig.Add(0x62,new LD62Instruction(){OpCode="62", Symble="LD", Operand= "H,D",Length=1 });
							SinglOpCodeConfig.Add(0x63,new LD63Instruction(){OpCode="63", Symble="LD", Operand= "H,E",Length=1 });
							SinglOpCodeConfig.Add(0x64,new LD64Instruction(){OpCode="64", Symble="LD", Operand= "H,H",Length=1 });
							SinglOpCodeConfig.Add(0x65,new LD65Instruction(){OpCode="65", Symble="LD", Operand= "H,L",Length=1 });
							SinglOpCodeConfig.Add(0x66,new LD66Instruction(){OpCode="66", Symble="LD", Operand= "H,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x67,new LD67Instruction(){OpCode="67", Symble="LD", Operand= "H,A",Length=1 });
							SinglOpCodeConfig.Add(0x68,new LD68Instruction(){OpCode="68", Symble="LD", Operand= "L,B",Length=1 });
							SinglOpCodeConfig.Add(0x69,new LD69Instruction(){OpCode="69", Symble="LD", Operand= "L,C",Length=1 });
							SinglOpCodeConfig.Add(0x6A,new LD6AInstruction(){OpCode="6A", Symble="LD", Operand= "L,D",Length=1 });
							SinglOpCodeConfig.Add(0x6B,new LD6BInstruction(){OpCode="6B", Symble="LD", Operand= "L,E",Length=1 });
							SinglOpCodeConfig.Add(0x6C,new LD6CInstruction(){OpCode="6C", Symble="LD", Operand= "L,H",Length=1 });
							SinglOpCodeConfig.Add(0x6D,new LD6DInstruction(){OpCode="6D", Symble="LD", Operand= "L,L",Length=1 });
							SinglOpCodeConfig.Add(0x6E,new LD6EInstruction(){OpCode="6E", Symble="LD", Operand= "L,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x6F,new LD6FInstruction(){OpCode="6F", Symble="LD", Operand= "L,A",Length=1 });
							SinglOpCodeConfig.Add(0x70,new LD70Instruction(){OpCode="70", Symble="LD", Operand= "(HL),B",Length=1 });
							SinglOpCodeConfig.Add(0x71,new LD71Instruction(){OpCode="71", Symble="LD", Operand= "(HL),C",Length=1 });
							SinglOpCodeConfig.Add(0x72,new LD72Instruction(){OpCode="72", Symble="LD", Operand= "(HL),D",Length=1 });
							SinglOpCodeConfig.Add(0x73,new LD73Instruction(){OpCode="73", Symble="LD", Operand= "(HL),E",Length=1 });
							SinglOpCodeConfig.Add(0x74,new LD74Instruction(){OpCode="74", Symble="LD", Operand= "(HL),H",Length=1 });
							SinglOpCodeConfig.Add(0x75,new LD75Instruction(){OpCode="75", Symble="LD", Operand= "(HL),L",Length=1 });
							SinglOpCodeConfig.Add(0x76,new HALT76Instruction(){OpCode="76", Symble="HALT", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0x77,new LD77Instruction(){OpCode="77", Symble="LD", Operand= "(HL),A",Length=1 });
							SinglOpCodeConfig.Add(0x78,new LD78Instruction(){OpCode="78", Symble="LD", Operand= "A,B",Length=1 });
							SinglOpCodeConfig.Add(0x79,new LD79Instruction(){OpCode="79", Symble="LD", Operand= "A,C",Length=1 });
							SinglOpCodeConfig.Add(0x7A,new LD7AInstruction(){OpCode="7A", Symble="LD", Operand= "A,D",Length=1 });
							SinglOpCodeConfig.Add(0x7B,new LD7BInstruction(){OpCode="7B", Symble="LD", Operand= "A,E",Length=1 });
							SinglOpCodeConfig.Add(0x7C,new LD7CInstruction(){OpCode="7C", Symble="LD", Operand= "A,H",Length=1 });
							SinglOpCodeConfig.Add(0x7D,new LD7DInstruction(){OpCode="7D", Symble="LD", Operand= "A,L",Length=1 });
							SinglOpCodeConfig.Add(0x7E,new LD7EInstruction(){OpCode="7E", Symble="LD", Operand= "A,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x7F,new LD7FInstruction(){OpCode="7F", Symble="LD", Operand= "A,A",Length=1 });
							SinglOpCodeConfig.Add(0x80,new ADD80Instruction(){OpCode="80", Symble="ADD", Operand= "A,B",Length=1 });
							SinglOpCodeConfig.Add(0x81,new ADD81Instruction(){OpCode="81", Symble="ADD", Operand= "A,C",Length=1 });
							SinglOpCodeConfig.Add(0x82,new ADD82Instruction(){OpCode="82", Symble="ADD", Operand= "A,D",Length=1 });
							SinglOpCodeConfig.Add(0x83,new ADD83Instruction(){OpCode="83", Symble="ADD", Operand= "A,E",Length=1 });
							SinglOpCodeConfig.Add(0x84,new ADD84Instruction(){OpCode="84", Symble="ADD", Operand= "A,H",Length=1 });
							SinglOpCodeConfig.Add(0x85,new ADD85Instruction(){OpCode="85", Symble="ADD", Operand= "A,L",Length=1 });
							SinglOpCodeConfig.Add(0x86,new ADD86Instruction(){OpCode="86", Symble="ADD", Operand= "A,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x87,new ADD87Instruction(){OpCode="87", Symble="ADD", Operand= "A,A",Length=1 });
							SinglOpCodeConfig.Add(0x88,new ADC88Instruction(){OpCode="88", Symble="ADC", Operand= "A,B",Length=1 });
							SinglOpCodeConfig.Add(0x89,new ADC89Instruction(){OpCode="89", Symble="ADC", Operand= "A,C",Length=1 });
							SinglOpCodeConfig.Add(0x8A,new ADC8AInstruction(){OpCode="8A", Symble="ADC", Operand= "A,D",Length=1 });
							SinglOpCodeConfig.Add(0x8B,new ADC8BInstruction(){OpCode="8B", Symble="ADC", Operand= "A,E",Length=1 });
							SinglOpCodeConfig.Add(0x8C,new ADC8CInstruction(){OpCode="8C", Symble="ADC", Operand= "A,H",Length=1 });
							SinglOpCodeConfig.Add(0x8D,new ADC8DInstruction(){OpCode="8D", Symble="ADC", Operand= "A,L",Length=1 });
							SinglOpCodeConfig.Add(0x8E,new ADC8EInstruction(){OpCode="8E", Symble="ADC", Operand= "A,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x8F,new ADC8FInstruction(){OpCode="8F", Symble="ADC", Operand= "A,A",Length=1 });
							SinglOpCodeConfig.Add(0x90,new SUB90Instruction(){OpCode="90", Symble="SUB", Operand= "B",Length=1 });
							SinglOpCodeConfig.Add(0x91,new SUB91Instruction(){OpCode="91", Symble="SUB", Operand= "C",Length=1 });
							SinglOpCodeConfig.Add(0x92,new SUB92Instruction(){OpCode="92", Symble="SUB", Operand= "D",Length=1 });
							SinglOpCodeConfig.Add(0x93,new SUB93Instruction(){OpCode="93", Symble="SUB", Operand= "E",Length=1 });
							SinglOpCodeConfig.Add(0x94,new SUB94Instruction(){OpCode="94", Symble="SUB", Operand= "H",Length=1 });
							SinglOpCodeConfig.Add(0x95,new SUB95Instruction(){OpCode="95", Symble="SUB", Operand= "L",Length=1 });
							SinglOpCodeConfig.Add(0x96,new SUB96Instruction(){OpCode="96", Symble="SUB", Operand= "(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x97,new SUB97Instruction(){OpCode="97", Symble="SUB", Operand= "A",Length=1 });
							SinglOpCodeConfig.Add(0x98,new SBC98Instruction(){OpCode="98", Symble="SBC", Operand= "A,B",Length=1 });
							SinglOpCodeConfig.Add(0x99,new SBC99Instruction(){OpCode="99", Symble="SBC", Operand= "A,C",Length=1 });
							SinglOpCodeConfig.Add(0x9A,new SBC9AInstruction(){OpCode="9A", Symble="SBC", Operand= "A,D",Length=1 });
							SinglOpCodeConfig.Add(0x9B,new SBC9BInstruction(){OpCode="9B", Symble="SBC", Operand= "A,E",Length=1 });
							SinglOpCodeConfig.Add(0x9C,new SBC9CInstruction(){OpCode="9C", Symble="SBC", Operand= "A,H",Length=1 });
							SinglOpCodeConfig.Add(0x9D,new SBC9DInstruction(){OpCode="9D", Symble="SBC", Operand= "A,L",Length=1 });
							SinglOpCodeConfig.Add(0x9E,new SBC9EInstruction(){OpCode="9E", Symble="SBC", Operand= "A,(HL)",Length=1 });
							SinglOpCodeConfig.Add(0x9F,new SBC9FInstruction(){OpCode="9F", Symble="SBC", Operand= "A,A",Length=1 });
							SinglOpCodeConfig.Add(0xA0,new ANDA0Instruction(){OpCode="A0", Symble="AND", Operand= "B",Length=1 });
							SinglOpCodeConfig.Add(0xA1,new ANDA1Instruction(){OpCode="A1", Symble="AND", Operand= "C",Length=1 });
							SinglOpCodeConfig.Add(0xA2,new ANDA2Instruction(){OpCode="A2", Symble="AND", Operand= "D",Length=1 });
							SinglOpCodeConfig.Add(0xA3,new ANDA3Instruction(){OpCode="A3", Symble="AND", Operand= "E",Length=1 });
							SinglOpCodeConfig.Add(0xA4,new ANDA4Instruction(){OpCode="A4", Symble="AND", Operand= "H",Length=1 });
							SinglOpCodeConfig.Add(0xA5,new ANDA5Instruction(){OpCode="A5", Symble="AND", Operand= "L",Length=1 });
							SinglOpCodeConfig.Add(0xA6,new ANDA6Instruction(){OpCode="A6", Symble="AND", Operand= "(HL)",Length=1 });
							SinglOpCodeConfig.Add(0xA7,new ANDA7Instruction(){OpCode="A7", Symble="AND", Operand= "A",Length=1 });
							SinglOpCodeConfig.Add(0xA8,new XORA8Instruction(){OpCode="A8", Symble="XOR", Operand= "B",Length=1 });
							SinglOpCodeConfig.Add(0xA9,new XORA9Instruction(){OpCode="A9", Symble="XOR", Operand= "C",Length=1 });
							SinglOpCodeConfig.Add(0xAA,new XORAAInstruction(){OpCode="AA", Symble="XOR", Operand= "D",Length=1 });
							SinglOpCodeConfig.Add(0xAB,new XORABInstruction(){OpCode="AB", Symble="XOR", Operand= "E",Length=1 });
							SinglOpCodeConfig.Add(0xAC,new XORACInstruction(){OpCode="AC", Symble="XOR", Operand= "H",Length=1 });
							SinglOpCodeConfig.Add(0xAD,new XORADInstruction(){OpCode="AD", Symble="XOR", Operand= "L",Length=1 });
							SinglOpCodeConfig.Add(0xAE,new XORAEInstruction(){OpCode="AE", Symble="XOR", Operand= "(HL)",Length=1 });
							SinglOpCodeConfig.Add(0xAF,new XORAFInstruction(){OpCode="AF", Symble="XOR", Operand= "A",Length=1 });
							SinglOpCodeConfig.Add(0xB0,new ORB0Instruction(){OpCode="B0", Symble="OR", Operand= "B",Length=1 });
							SinglOpCodeConfig.Add(0xB1,new ORB1Instruction(){OpCode="B1", Symble="OR", Operand= "C",Length=1 });
							SinglOpCodeConfig.Add(0xB2,new ORB2Instruction(){OpCode="B2", Symble="OR", Operand= "D",Length=1 });
							SinglOpCodeConfig.Add(0xB3,new ORB3Instruction(){OpCode="B3", Symble="OR", Operand= "E",Length=1 });
							SinglOpCodeConfig.Add(0xB4,new ORB4Instruction(){OpCode="B4", Symble="OR", Operand= "H",Length=1 });
							SinglOpCodeConfig.Add(0xB5,new ORB5Instruction(){OpCode="B5", Symble="OR", Operand= "L",Length=1 });
							SinglOpCodeConfig.Add(0xB6,new ORB6Instruction(){OpCode="B6", Symble="OR", Operand= "(HL)",Length=1 });
							SinglOpCodeConfig.Add(0xB7,new ORB7Instruction(){OpCode="B7", Symble="OR", Operand= "A",Length=1 });
							SinglOpCodeConfig.Add(0xB8,new CPB8Instruction(){OpCode="B8", Symble="CP", Operand= "B",Length=1 });
							SinglOpCodeConfig.Add(0xB9,new CPB9Instruction(){OpCode="B9", Symble="CP", Operand= "C",Length=1 });
							SinglOpCodeConfig.Add(0xBA,new CPBAInstruction(){OpCode="BA", Symble="CP", Operand= "D",Length=1 });
							SinglOpCodeConfig.Add(0xBB,new CPBBInstruction(){OpCode="BB", Symble="CP", Operand= "E",Length=1 });
							SinglOpCodeConfig.Add(0xBC,new CPBCInstruction(){OpCode="BC", Symble="CP", Operand= "H",Length=1 });
							SinglOpCodeConfig.Add(0xBD,new CPBDInstruction(){OpCode="BD", Symble="CP", Operand= "L",Length=1 });
							SinglOpCodeConfig.Add(0xBE,new CPBEInstruction(){OpCode="BE", Symble="CP", Operand= "(HL)",Length=1 });
							SinglOpCodeConfig.Add(0xBF,new CPBFInstruction(){OpCode="BF", Symble="CP", Operand= "A",Length=1 });
							SinglOpCodeConfig.Add(0xC0,new RETC0Instruction(){OpCode="C0", Symble="RET", Operand= "NZ",Length=1 });
							SinglOpCodeConfig.Add(0xC1,new POPC1Instruction(){OpCode="C1", Symble="POP", Operand= "BC",Length=1 });
							SinglOpCodeConfig.Add(0xC2,new JPC2Instruction(){OpCode="C2", Symble="JP", Operand= "NZ,a16",Length=3 });
							SinglOpCodeConfig.Add(0xC3,new JPC3Instruction(){OpCode="C3", Symble="JP", Operand= "a16",Length=3 });
							SinglOpCodeConfig.Add(0xC4,new CALLC4Instruction(){OpCode="C4", Symble="CALL", Operand= "NZ,a16",Length=3 });
							SinglOpCodeConfig.Add(0xC5,new PUSHC5Instruction(){OpCode="C5", Symble="PUSH", Operand= "BC",Length=1 });
							SinglOpCodeConfig.Add(0xC6,new ADDC6Instruction(){OpCode="C6", Symble="ADD", Operand= "A,d8",Length=2 });
							SinglOpCodeConfig.Add(0xC7,new RSTC7Instruction(){OpCode="C7", Symble="RST", Operand= "00H",Length=1 });
							SinglOpCodeConfig.Add(0xC8,new RETC8Instruction(){OpCode="C8", Symble="RET", Operand= "Z",Length=1 });
							SinglOpCodeConfig.Add(0xC9,new RETC9Instruction(){OpCode="C9", Symble="RET", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0xCA,new JPCAInstruction(){OpCode="CA", Symble="JP", Operand= "Z,a16",Length=3 });
							SinglOpCodeConfig.Add(0xCB,new PREFIXCBInstruction(){OpCode="CB", Symble="PREFIX", Operand= "CB",Length=1 });
							SinglOpCodeConfig.Add(0xCC,new CALLCCInstruction(){OpCode="CC", Symble="CALL", Operand= "Z,a16",Length=3 });
							SinglOpCodeConfig.Add(0xCD,new CALLCDInstruction(){OpCode="CD", Symble="CALL", Operand= "a16",Length=3 });
							SinglOpCodeConfig.Add(0xCE,new ADCCEInstruction(){OpCode="CE", Symble="ADC", Operand= "A,d8",Length=2 });
							SinglOpCodeConfig.Add(0xCF,new RSTCFInstruction(){OpCode="CF", Symble="RST", Operand= "08H",Length=1 });
							SinglOpCodeConfig.Add(0xD0,new RETD0Instruction(){OpCode="D0", Symble="RET", Operand= "NC",Length=1 });
							SinglOpCodeConfig.Add(0xD1,new POPD1Instruction(){OpCode="D1", Symble="POP", Operand= "DE",Length=1 });
							SinglOpCodeConfig.Add(0xD2,new JPD2Instruction(){OpCode="D2", Symble="JP", Operand= "NC,a16",Length=3 });
							SinglOpCodeConfig.Add(0xD4,new CALLD4Instruction(){OpCode="D4", Symble="CALL", Operand= "NC,a16",Length=3 });
							SinglOpCodeConfig.Add(0xD5,new PUSHD5Instruction(){OpCode="D5", Symble="PUSH", Operand= "DE",Length=1 });
							SinglOpCodeConfig.Add(0xD6,new SUBD6Instruction(){OpCode="D6", Symble="SUB", Operand= "d8",Length=2 });
							SinglOpCodeConfig.Add(0xD7,new RSTD7Instruction(){OpCode="D7", Symble="RST", Operand= "10H",Length=1 });
							SinglOpCodeConfig.Add(0xD8,new RETD8Instruction(){OpCode="D8", Symble="RET", Operand= "C",Length=1 });
							SinglOpCodeConfig.Add(0xD9,new RETID9Instruction(){OpCode="D9", Symble="RETI", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0xDA,new JPDAInstruction(){OpCode="DA", Symble="JP", Operand= "C,a16",Length=3 });
							SinglOpCodeConfig.Add(0xDC,new CALLDCInstruction(){OpCode="DC", Symble="CALL", Operand= "C,a16",Length=3 });
							SinglOpCodeConfig.Add(0xDE,new SBCDEInstruction(){OpCode="DE", Symble="SBC", Operand= "A,d8",Length=2 });
							SinglOpCodeConfig.Add(0xDF,new RSTDFInstruction(){OpCode="DF", Symble="RST", Operand= "18H",Length=1 });
							SinglOpCodeConfig.Add(0xE0,new LDHE0Instruction(){OpCode="E0", Symble="LDH", Operand= "(a8),A",Length=2 });
							SinglOpCodeConfig.Add(0xE1,new POPE1Instruction(){OpCode="E1", Symble="POP", Operand= "HL",Length=1 });
							SinglOpCodeConfig.Add(0xE2,new LDE2Instruction(){OpCode="E2", Symble="LD", Operand= "(C),A",Length=2 });
							SinglOpCodeConfig.Add(0xE5,new PUSHE5Instruction(){OpCode="E5", Symble="PUSH", Operand= "HL",Length=1 });
							SinglOpCodeConfig.Add(0xE6,new ANDE6Instruction(){OpCode="E6", Symble="AND", Operand= "d8",Length=2 });
							SinglOpCodeConfig.Add(0xE7,new RSTE7Instruction(){OpCode="E7", Symble="RST", Operand= "20H",Length=1 });
							SinglOpCodeConfig.Add(0xE8,new ADDE8Instruction(){OpCode="E8", Symble="ADD", Operand= "SP,r8",Length=2 });
							SinglOpCodeConfig.Add(0xE9,new JPE9Instruction(){OpCode="E9", Symble="JP", Operand= "(HL)",Length=1 });
							SinglOpCodeConfig.Add(0xEA,new LDEAInstruction(){OpCode="EA", Symble="LD", Operand= "(a16),A",Length=3 });
							SinglOpCodeConfig.Add(0xEE,new XOREEInstruction(){OpCode="EE", Symble="XOR", Operand= "d8",Length=2 });
							SinglOpCodeConfig.Add(0xEF,new RSTEFInstruction(){OpCode="EF", Symble="RST", Operand= "28H",Length=1 });
							SinglOpCodeConfig.Add(0xF0,new LDHF0Instruction(){OpCode="F0", Symble="LDH", Operand= "A,(a8)",Length=2 });
							SinglOpCodeConfig.Add(0xF1,new POPF1Instruction(){OpCode="F1", Symble="POP", Operand= "AF",Length=1 });
							SinglOpCodeConfig.Add(0xF2,new LDF2Instruction(){OpCode="F2", Symble="LD", Operand= "A,(C)",Length=2 });
							SinglOpCodeConfig.Add(0xF3,new DIF3Instruction(){OpCode="F3", Symble="DI", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0xF5,new PUSHF5Instruction(){OpCode="F5", Symble="PUSH", Operand= "AF",Length=1 });
							SinglOpCodeConfig.Add(0xF6,new ORF6Instruction(){OpCode="F6", Symble="OR", Operand= "d8",Length=2 });
							SinglOpCodeConfig.Add(0xF7,new RSTF7Instruction(){OpCode="F7", Symble="RST", Operand= "30H",Length=1 });
							SinglOpCodeConfig.Add(0xF8,new LDF8Instruction(){OpCode="F8", Symble="LD", Operand= "HL,SP+r8",Length=2 });
							SinglOpCodeConfig.Add(0xF9,new LDF9Instruction(){OpCode="F9", Symble="LD", Operand= "SP,HL",Length=1 });
							SinglOpCodeConfig.Add(0xFA,new LDFAInstruction(){OpCode="FA", Symble="LD", Operand= "A,(a16)",Length=3 });
							SinglOpCodeConfig.Add(0xFB,new EIFBInstruction(){OpCode="FB", Symble="EI", Operand= "",Length=1 });
							SinglOpCodeConfig.Add(0xFE,new CPFEInstruction(){OpCode="FE", Symble="CP", Operand= "d8",Length=2 });
							SinglOpCodeConfig.Add(0xFF,new RSTFFInstruction(){OpCode="FF", Symble="RST", Operand= "38H",Length=1 });
							MultipleOpCodeConfig.Add(0x00 ,new RLCCB00Instruction(){OpCode="CB 00", Symble="RLC", Operand= "B",Length=2 });
							MultipleOpCodeConfig.Add(0x01 ,new RLCCB01Instruction(){OpCode="CB 01", Symble="RLC", Operand= "C",Length=2 });
							MultipleOpCodeConfig.Add(0x02 ,new RLCCB02Instruction(){OpCode="CB 02", Symble="RLC", Operand= "D",Length=2 });
							MultipleOpCodeConfig.Add(0x03 ,new RLCCB03Instruction(){OpCode="CB 03", Symble="RLC", Operand= "E",Length=2 });
							MultipleOpCodeConfig.Add(0x04 ,new RLCCB04Instruction(){OpCode="CB 04", Symble="RLC", Operand= "H",Length=2 });
							MultipleOpCodeConfig.Add(0x05 ,new RLCCB05Instruction(){OpCode="CB 05", Symble="RLC", Operand= "L",Length=2 });
							MultipleOpCodeConfig.Add(0x06 ,new RLCCB06Instruction(){OpCode="CB 06", Symble="RLC", Operand= "(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x07 ,new RLCCB07Instruction(){OpCode="CB 07", Symble="RLC", Operand= "A",Length=2 });
							MultipleOpCodeConfig.Add(0x08 ,new RRCCB08Instruction(){OpCode="CB 08", Symble="RRC", Operand= "B",Length=2 });
							MultipleOpCodeConfig.Add(0x09 ,new RRCCB09Instruction(){OpCode="CB 09", Symble="RRC", Operand= "C",Length=2 });
							MultipleOpCodeConfig.Add(0x0A ,new RRCCB0AInstruction(){OpCode="CB 0A", Symble="RRC", Operand= "D",Length=2 });
							MultipleOpCodeConfig.Add(0x0B ,new RRCCB0BInstruction(){OpCode="CB 0B", Symble="RRC", Operand= "E",Length=2 });
							MultipleOpCodeConfig.Add(0x0C ,new RRCCB0CInstruction(){OpCode="CB 0C", Symble="RRC", Operand= "H",Length=2 });
							MultipleOpCodeConfig.Add(0x0D ,new RRCCB0DInstruction(){OpCode="CB 0D", Symble="RRC", Operand= "L",Length=2 });
							MultipleOpCodeConfig.Add(0x0E ,new RRCCB0EInstruction(){OpCode="CB 0E", Symble="RRC", Operand= "(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x0F ,new RRCCB0FInstruction(){OpCode="CB 0F", Symble="RRC", Operand= "A",Length=2 });
							MultipleOpCodeConfig.Add(0x10 ,new RLCB10Instruction(){OpCode="CB 10", Symble="RL", Operand= "B",Length=2 });
							MultipleOpCodeConfig.Add(0x11 ,new RLCB11Instruction(){OpCode="CB 11", Symble="RL", Operand= "C",Length=2 });
							MultipleOpCodeConfig.Add(0x12 ,new RLCB12Instruction(){OpCode="CB 12", Symble="RL", Operand= "D",Length=2 });
							MultipleOpCodeConfig.Add(0x13 ,new RLCB13Instruction(){OpCode="CB 13", Symble="RL", Operand= "E",Length=2 });
							MultipleOpCodeConfig.Add(0x14 ,new RLCB14Instruction(){OpCode="CB 14", Symble="RL", Operand= "H",Length=2 });
							MultipleOpCodeConfig.Add(0x15 ,new RLCB15Instruction(){OpCode="CB 15", Symble="RL", Operand= "L",Length=2 });
							MultipleOpCodeConfig.Add(0x16 ,new RLCB16Instruction(){OpCode="CB 16", Symble="RL", Operand= "(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x17 ,new RLCB17Instruction(){OpCode="CB 17", Symble="RL", Operand= "A",Length=2 });
							MultipleOpCodeConfig.Add(0x18 ,new RRCB18Instruction(){OpCode="CB 18", Symble="RR", Operand= "B",Length=2 });
							MultipleOpCodeConfig.Add(0x19 ,new RRCB19Instruction(){OpCode="CB 19", Symble="RR", Operand= "C",Length=2 });
							MultipleOpCodeConfig.Add(0x1A ,new RRCB1AInstruction(){OpCode="CB 1A", Symble="RR", Operand= "D",Length=2 });
							MultipleOpCodeConfig.Add(0x1B ,new RRCB1BInstruction(){OpCode="CB 1B", Symble="RR", Operand= "E",Length=2 });
							MultipleOpCodeConfig.Add(0x1C ,new RRCB1CInstruction(){OpCode="CB 1C", Symble="RR", Operand= "H",Length=2 });
							MultipleOpCodeConfig.Add(0x1D ,new RRCB1DInstruction(){OpCode="CB 1D", Symble="RR", Operand= "L",Length=2 });
							MultipleOpCodeConfig.Add(0x1E ,new RRCB1EInstruction(){OpCode="CB 1E", Symble="RR", Operand= "(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x1F ,new RRCB1FInstruction(){OpCode="CB 1F", Symble="RR", Operand= "A",Length=2 });
							MultipleOpCodeConfig.Add(0x20 ,new SLACB20Instruction(){OpCode="CB 20", Symble="SLA", Operand= "B",Length=2 });
							MultipleOpCodeConfig.Add(0x21 ,new SLACB21Instruction(){OpCode="CB 21", Symble="SLA", Operand= "C",Length=2 });
							MultipleOpCodeConfig.Add(0x22 ,new SLACB22Instruction(){OpCode="CB 22", Symble="SLA", Operand= "D",Length=2 });
							MultipleOpCodeConfig.Add(0x23 ,new SLACB23Instruction(){OpCode="CB 23", Symble="SLA", Operand= "E",Length=2 });
							MultipleOpCodeConfig.Add(0x24 ,new SLACB24Instruction(){OpCode="CB 24", Symble="SLA", Operand= "H",Length=2 });
							MultipleOpCodeConfig.Add(0x25 ,new SLACB25Instruction(){OpCode="CB 25", Symble="SLA", Operand= "L",Length=2 });
							MultipleOpCodeConfig.Add(0x26 ,new SLACB26Instruction(){OpCode="CB 26", Symble="SLA", Operand= "(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x27 ,new SLACB27Instruction(){OpCode="CB 27", Symble="SLA", Operand= "A",Length=2 });
							MultipleOpCodeConfig.Add(0x28 ,new SRACB28Instruction(){OpCode="CB 28", Symble="SRA", Operand= "B",Length=2 });
							MultipleOpCodeConfig.Add(0x29 ,new SRACB29Instruction(){OpCode="CB 29", Symble="SRA", Operand= "C",Length=2 });
							MultipleOpCodeConfig.Add(0x2A ,new SRACB2AInstruction(){OpCode="CB 2A", Symble="SRA", Operand= "D",Length=2 });
							MultipleOpCodeConfig.Add(0x2B ,new SRACB2BInstruction(){OpCode="CB 2B", Symble="SRA", Operand= "E",Length=2 });
							MultipleOpCodeConfig.Add(0x2C ,new SRACB2CInstruction(){OpCode="CB 2C", Symble="SRA", Operand= "H",Length=2 });
							MultipleOpCodeConfig.Add(0x2D ,new SRACB2DInstruction(){OpCode="CB 2D", Symble="SRA", Operand= "L",Length=2 });
							MultipleOpCodeConfig.Add(0x2E ,new SRACB2EInstruction(){OpCode="CB 2E", Symble="SRA", Operand= "(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x2F ,new SRACB2FInstruction(){OpCode="CB 2F", Symble="SRA", Operand= "A",Length=2 });
							MultipleOpCodeConfig.Add(0x30 ,new SWAPCB30Instruction(){OpCode="CB 30", Symble="SWAP", Operand= "B",Length=2 });
							MultipleOpCodeConfig.Add(0x31 ,new SWAPCB31Instruction(){OpCode="CB 31", Symble="SWAP", Operand= "C",Length=2 });
							MultipleOpCodeConfig.Add(0x32 ,new SWAPCB32Instruction(){OpCode="CB 32", Symble="SWAP", Operand= "D",Length=2 });
							MultipleOpCodeConfig.Add(0x33 ,new SWAPCB33Instruction(){OpCode="CB 33", Symble="SWAP", Operand= "E",Length=2 });
							MultipleOpCodeConfig.Add(0x34 ,new SWAPCB34Instruction(){OpCode="CB 34", Symble="SWAP", Operand= "H",Length=2 });
							MultipleOpCodeConfig.Add(0x35 ,new SWAPCB35Instruction(){OpCode="CB 35", Symble="SWAP", Operand= "L",Length=2 });
							MultipleOpCodeConfig.Add(0x36 ,new SWAPCB36Instruction(){OpCode="CB 36", Symble="SWAP", Operand= "(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x37 ,new SWAPCB37Instruction(){OpCode="CB 37", Symble="SWAP", Operand= "A",Length=2 });
							MultipleOpCodeConfig.Add(0x38 ,new SRLCB38Instruction(){OpCode="CB 38", Symble="SRL", Operand= "B",Length=2 });
							MultipleOpCodeConfig.Add(0x39 ,new SRLCB39Instruction(){OpCode="CB 39", Symble="SRL", Operand= "C",Length=2 });
							MultipleOpCodeConfig.Add(0x3A ,new SRLCB3AInstruction(){OpCode="CB 3A", Symble="SRL", Operand= "D",Length=2 });
							MultipleOpCodeConfig.Add(0x3B ,new SRLCB3BInstruction(){OpCode="CB 3B", Symble="SRL", Operand= "E",Length=2 });
							MultipleOpCodeConfig.Add(0x3C ,new SRLCB3CInstruction(){OpCode="CB 3C", Symble="SRL", Operand= "H",Length=2 });
							MultipleOpCodeConfig.Add(0x3D ,new SRLCB3DInstruction(){OpCode="CB 3D", Symble="SRL", Operand= "L",Length=2 });
							MultipleOpCodeConfig.Add(0x3E ,new SRLCB3EInstruction(){OpCode="CB 3E", Symble="SRL", Operand= "(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x3F ,new SRLCB3FInstruction(){OpCode="CB 3F", Symble="SRL", Operand= "A",Length=2 });
							MultipleOpCodeConfig.Add(0x40 ,new BITCB40Instruction(){OpCode="CB 40", Symble="BIT", Operand= "0,B",Length=2 });
							MultipleOpCodeConfig.Add(0x41 ,new BITCB41Instruction(){OpCode="CB 41", Symble="BIT", Operand= "0,C",Length=2 });
							MultipleOpCodeConfig.Add(0x42 ,new BITCB42Instruction(){OpCode="CB 42", Symble="BIT", Operand= "0,D",Length=2 });
							MultipleOpCodeConfig.Add(0x43 ,new BITCB43Instruction(){OpCode="CB 43", Symble="BIT", Operand= "0,E",Length=2 });
							MultipleOpCodeConfig.Add(0x44 ,new BITCB44Instruction(){OpCode="CB 44", Symble="BIT", Operand= "0,H",Length=2 });
							MultipleOpCodeConfig.Add(0x45 ,new BITCB45Instruction(){OpCode="CB 45", Symble="BIT", Operand= "0,L",Length=2 });
							MultipleOpCodeConfig.Add(0x46 ,new BITCB46Instruction(){OpCode="CB 46", Symble="BIT", Operand= "0,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x47 ,new BITCB47Instruction(){OpCode="CB 47", Symble="BIT", Operand= "0,A",Length=2 });
							MultipleOpCodeConfig.Add(0x48 ,new BITCB48Instruction(){OpCode="CB 48", Symble="BIT", Operand= "1,B",Length=2 });
							MultipleOpCodeConfig.Add(0x49 ,new BITCB49Instruction(){OpCode="CB 49", Symble="BIT", Operand= "1,C",Length=2 });
							MultipleOpCodeConfig.Add(0x4A ,new BITCB4AInstruction(){OpCode="CB 4A", Symble="BIT", Operand= "1,D",Length=2 });
							MultipleOpCodeConfig.Add(0x4B ,new BITCB4BInstruction(){OpCode="CB 4B", Symble="BIT", Operand= "1,E",Length=2 });
							MultipleOpCodeConfig.Add(0x4C ,new BITCB4CInstruction(){OpCode="CB 4C", Symble="BIT", Operand= "1,H",Length=2 });
							MultipleOpCodeConfig.Add(0x4D ,new BITCB4DInstruction(){OpCode="CB 4D", Symble="BIT", Operand= "1,L",Length=2 });
							MultipleOpCodeConfig.Add(0x4E ,new BITCB4EInstruction(){OpCode="CB 4E", Symble="BIT", Operand= "1,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x4F ,new BITCB4FInstruction(){OpCode="CB 4F", Symble="BIT", Operand= "1,A",Length=2 });
							MultipleOpCodeConfig.Add(0x50 ,new BITCB50Instruction(){OpCode="CB 50", Symble="BIT", Operand= "2,B",Length=2 });
							MultipleOpCodeConfig.Add(0x51 ,new BITCB51Instruction(){OpCode="CB 51", Symble="BIT", Operand= "2,C",Length=2 });
							MultipleOpCodeConfig.Add(0x52 ,new BITCB52Instruction(){OpCode="CB 52", Symble="BIT", Operand= "2,D",Length=2 });
							MultipleOpCodeConfig.Add(0x53 ,new BITCB53Instruction(){OpCode="CB 53", Symble="BIT", Operand= "2,E",Length=2 });
							MultipleOpCodeConfig.Add(0x54 ,new BITCB54Instruction(){OpCode="CB 54", Symble="BIT", Operand= "2,H",Length=2 });
							MultipleOpCodeConfig.Add(0x55 ,new BITCB55Instruction(){OpCode="CB 55", Symble="BIT", Operand= "2,L",Length=2 });
							MultipleOpCodeConfig.Add(0x56 ,new BITCB56Instruction(){OpCode="CB 56", Symble="BIT", Operand= "2,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x57 ,new BITCB57Instruction(){OpCode="CB 57", Symble="BIT", Operand= "2,A",Length=2 });
							MultipleOpCodeConfig.Add(0x58 ,new BITCB58Instruction(){OpCode="CB 58", Symble="BIT", Operand= "3,B",Length=2 });
							MultipleOpCodeConfig.Add(0x59 ,new BITCB59Instruction(){OpCode="CB 59", Symble="BIT", Operand= "3,C",Length=2 });
							MultipleOpCodeConfig.Add(0x5A ,new BITCB5AInstruction(){OpCode="CB 5A", Symble="BIT", Operand= "3,D",Length=2 });
							MultipleOpCodeConfig.Add(0x5B ,new BITCB5BInstruction(){OpCode="CB 5B", Symble="BIT", Operand= "3,E",Length=2 });
							MultipleOpCodeConfig.Add(0x5C ,new BITCB5CInstruction(){OpCode="CB 5C", Symble="BIT", Operand= "3,H",Length=2 });
							MultipleOpCodeConfig.Add(0x5D ,new BITCB5DInstruction(){OpCode="CB 5D", Symble="BIT", Operand= "3,L",Length=2 });
							MultipleOpCodeConfig.Add(0x5E ,new BITCB5EInstruction(){OpCode="CB 5E", Symble="BIT", Operand= "3,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x5F ,new BITCB5FInstruction(){OpCode="CB 5F", Symble="BIT", Operand= "3,A",Length=2 });
							MultipleOpCodeConfig.Add(0x60 ,new BITCB60Instruction(){OpCode="CB 60", Symble="BIT", Operand= "4,B",Length=2 });
							MultipleOpCodeConfig.Add(0x61 ,new BITCB61Instruction(){OpCode="CB 61", Symble="BIT", Operand= "4,C",Length=2 });
							MultipleOpCodeConfig.Add(0x62 ,new BITCB62Instruction(){OpCode="CB 62", Symble="BIT", Operand= "4,D",Length=2 });
							MultipleOpCodeConfig.Add(0x63 ,new BITCB63Instruction(){OpCode="CB 63", Symble="BIT", Operand= "4,E",Length=2 });
							MultipleOpCodeConfig.Add(0x64 ,new BITCB64Instruction(){OpCode="CB 64", Symble="BIT", Operand= "4,H",Length=2 });
							MultipleOpCodeConfig.Add(0x65 ,new BITCB65Instruction(){OpCode="CB 65", Symble="BIT", Operand= "4,L",Length=2 });
							MultipleOpCodeConfig.Add(0x66 ,new BITCB66Instruction(){OpCode="CB 66", Symble="BIT", Operand= "4,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x67 ,new BITCB67Instruction(){OpCode="CB 67", Symble="BIT", Operand= "4,A",Length=2 });
							MultipleOpCodeConfig.Add(0x68 ,new BITCB68Instruction(){OpCode="CB 68", Symble="BIT", Operand= "5,B",Length=2 });
							MultipleOpCodeConfig.Add(0x69 ,new BITCB69Instruction(){OpCode="CB 69", Symble="BIT", Operand= "5,C",Length=2 });
							MultipleOpCodeConfig.Add(0x6A ,new BITCB6AInstruction(){OpCode="CB 6A", Symble="BIT", Operand= "5,D",Length=2 });
							MultipleOpCodeConfig.Add(0x6B ,new BITCB6BInstruction(){OpCode="CB 6B", Symble="BIT", Operand= "5,E",Length=2 });
							MultipleOpCodeConfig.Add(0x6C ,new BITCB6CInstruction(){OpCode="CB 6C", Symble="BIT", Operand= "5,H",Length=2 });
							MultipleOpCodeConfig.Add(0x6D ,new BITCB6DInstruction(){OpCode="CB 6D", Symble="BIT", Operand= "5,L",Length=2 });
							MultipleOpCodeConfig.Add(0x6E ,new BITCB6EInstruction(){OpCode="CB 6E", Symble="BIT", Operand= "5,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x6F ,new BITCB6FInstruction(){OpCode="CB 6F", Symble="BIT", Operand= "5,A",Length=2 });
							MultipleOpCodeConfig.Add(0x70 ,new BITCB70Instruction(){OpCode="CB 70", Symble="BIT", Operand= "6,B",Length=2 });
							MultipleOpCodeConfig.Add(0x71 ,new BITCB71Instruction(){OpCode="CB 71", Symble="BIT", Operand= "6,C",Length=2 });
							MultipleOpCodeConfig.Add(0x72 ,new BITCB72Instruction(){OpCode="CB 72", Symble="BIT", Operand= "6,D",Length=2 });
							MultipleOpCodeConfig.Add(0x73 ,new BITCB73Instruction(){OpCode="CB 73", Symble="BIT", Operand= "6,E",Length=2 });
							MultipleOpCodeConfig.Add(0x74 ,new BITCB74Instruction(){OpCode="CB 74", Symble="BIT", Operand= "6,H",Length=2 });
							MultipleOpCodeConfig.Add(0x75 ,new BITCB75Instruction(){OpCode="CB 75", Symble="BIT", Operand= "6,L",Length=2 });
							MultipleOpCodeConfig.Add(0x76 ,new BITCB76Instruction(){OpCode="CB 76", Symble="BIT", Operand= "6,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x77 ,new BITCB77Instruction(){OpCode="CB 77", Symble="BIT", Operand= "6,A",Length=2 });
							MultipleOpCodeConfig.Add(0x78 ,new BITCB78Instruction(){OpCode="CB 78", Symble="BIT", Operand= "7,B",Length=2 });
							MultipleOpCodeConfig.Add(0x79 ,new BITCB79Instruction(){OpCode="CB 79", Symble="BIT", Operand= "7,C",Length=2 });
							MultipleOpCodeConfig.Add(0x7A ,new BITCB7AInstruction(){OpCode="CB 7A", Symble="BIT", Operand= "7,D",Length=2 });
							MultipleOpCodeConfig.Add(0x7B ,new BITCB7BInstruction(){OpCode="CB 7B", Symble="BIT", Operand= "7,E",Length=2 });
							MultipleOpCodeConfig.Add(0x7C ,new BITCB7CInstruction(){OpCode="CB 7C", Symble="BIT", Operand= "7,H",Length=2 });
							MultipleOpCodeConfig.Add(0x7D ,new BITCB7DInstruction(){OpCode="CB 7D", Symble="BIT", Operand= "7,L",Length=2 });
							MultipleOpCodeConfig.Add(0x7E ,new BITCB7EInstruction(){OpCode="CB 7E", Symble="BIT", Operand= "7,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x7F ,new BITCB7FInstruction(){OpCode="CB 7F", Symble="BIT", Operand= "7,A",Length=2 });
							MultipleOpCodeConfig.Add(0x80 ,new RESCB80Instruction(){OpCode="CB 80", Symble="RES", Operand= "0,B",Length=2 });
							MultipleOpCodeConfig.Add(0x81 ,new RESCB81Instruction(){OpCode="CB 81", Symble="RES", Operand= "0,C",Length=2 });
							MultipleOpCodeConfig.Add(0x82 ,new RESCB82Instruction(){OpCode="CB 82", Symble="RES", Operand= "0,D",Length=2 });
							MultipleOpCodeConfig.Add(0x83 ,new RESCB83Instruction(){OpCode="CB 83", Symble="RES", Operand= "0,E",Length=2 });
							MultipleOpCodeConfig.Add(0x84 ,new RESCB84Instruction(){OpCode="CB 84", Symble="RES", Operand= "0,H",Length=2 });
							MultipleOpCodeConfig.Add(0x85 ,new RESCB85Instruction(){OpCode="CB 85", Symble="RES", Operand= "0,L",Length=2 });
							MultipleOpCodeConfig.Add(0x86 ,new RESCB86Instruction(){OpCode="CB 86", Symble="RES", Operand= "0,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x87 ,new RESCB87Instruction(){OpCode="CB 87", Symble="RES", Operand= "0,A",Length=2 });
							MultipleOpCodeConfig.Add(0x88 ,new RESCB88Instruction(){OpCode="CB 88", Symble="RES", Operand= "1,B",Length=2 });
							MultipleOpCodeConfig.Add(0x89 ,new RESCB89Instruction(){OpCode="CB 89", Symble="RES", Operand= "1,C",Length=2 });
							MultipleOpCodeConfig.Add(0x8A ,new RESCB8AInstruction(){OpCode="CB 8A", Symble="RES", Operand= "1,D",Length=2 });
							MultipleOpCodeConfig.Add(0x8B ,new RESCB8BInstruction(){OpCode="CB 8B", Symble="RES", Operand= "1,E",Length=2 });
							MultipleOpCodeConfig.Add(0x8C ,new RESCB8CInstruction(){OpCode="CB 8C", Symble="RES", Operand= "1,H",Length=2 });
							MultipleOpCodeConfig.Add(0x8D ,new RESCB8DInstruction(){OpCode="CB 8D", Symble="RES", Operand= "1,L",Length=2 });
							MultipleOpCodeConfig.Add(0x8E ,new RESCB8EInstruction(){OpCode="CB 8E", Symble="RES", Operand= "1,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x8F ,new RESCB8FInstruction(){OpCode="CB 8F", Symble="RES", Operand= "1,A",Length=2 });
							MultipleOpCodeConfig.Add(0x90 ,new RESCB90Instruction(){OpCode="CB 90", Symble="RES", Operand= "2,B",Length=2 });
							MultipleOpCodeConfig.Add(0x91 ,new RESCB91Instruction(){OpCode="CB 91", Symble="RES", Operand= "2,C",Length=2 });
							MultipleOpCodeConfig.Add(0x92 ,new RESCB92Instruction(){OpCode="CB 92", Symble="RES", Operand= "2,D",Length=2 });
							MultipleOpCodeConfig.Add(0x93 ,new RESCB93Instruction(){OpCode="CB 93", Symble="RES", Operand= "2,E",Length=2 });
							MultipleOpCodeConfig.Add(0x94 ,new RESCB94Instruction(){OpCode="CB 94", Symble="RES", Operand= "2,H",Length=2 });
							MultipleOpCodeConfig.Add(0x95 ,new RESCB95Instruction(){OpCode="CB 95", Symble="RES", Operand= "2,L",Length=2 });
							MultipleOpCodeConfig.Add(0x96 ,new RESCB96Instruction(){OpCode="CB 96", Symble="RES", Operand= "2,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x97 ,new RESCB97Instruction(){OpCode="CB 97", Symble="RES", Operand= "2,A",Length=2 });
							MultipleOpCodeConfig.Add(0x98 ,new RESCB98Instruction(){OpCode="CB 98", Symble="RES", Operand= "3,B",Length=2 });
							MultipleOpCodeConfig.Add(0x99 ,new RESCB99Instruction(){OpCode="CB 99", Symble="RES", Operand= "3,C",Length=2 });
							MultipleOpCodeConfig.Add(0x9A ,new RESCB9AInstruction(){OpCode="CB 9A", Symble="RES", Operand= "3,D",Length=2 });
							MultipleOpCodeConfig.Add(0x9B ,new RESCB9BInstruction(){OpCode="CB 9B", Symble="RES", Operand= "3,E",Length=2 });
							MultipleOpCodeConfig.Add(0x9C ,new RESCB9CInstruction(){OpCode="CB 9C", Symble="RES", Operand= "3,H",Length=2 });
							MultipleOpCodeConfig.Add(0x9D ,new RESCB9DInstruction(){OpCode="CB 9D", Symble="RES", Operand= "3,L",Length=2 });
							MultipleOpCodeConfig.Add(0x9E ,new RESCB9EInstruction(){OpCode="CB 9E", Symble="RES", Operand= "3,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0x9F ,new RESCB9FInstruction(){OpCode="CB 9F", Symble="RES", Operand= "3,A",Length=2 });
							MultipleOpCodeConfig.Add(0xA0 ,new RESCBA0Instruction(){OpCode="CB A0", Symble="RES", Operand= "4,B",Length=2 });
							MultipleOpCodeConfig.Add(0xA1 ,new RESCBA1Instruction(){OpCode="CB A1", Symble="RES", Operand= "4,C",Length=2 });
							MultipleOpCodeConfig.Add(0xA2 ,new RESCBA2Instruction(){OpCode="CB A2", Symble="RES", Operand= "4,D",Length=2 });
							MultipleOpCodeConfig.Add(0xA3 ,new RESCBA3Instruction(){OpCode="CB A3", Symble="RES", Operand= "4,E",Length=2 });
							MultipleOpCodeConfig.Add(0xA4 ,new RESCBA4Instruction(){OpCode="CB A4", Symble="RES", Operand= "4,H",Length=2 });
							MultipleOpCodeConfig.Add(0xA5 ,new RESCBA5Instruction(){OpCode="CB A5", Symble="RES", Operand= "4,L",Length=2 });
							MultipleOpCodeConfig.Add(0xA6 ,new RESCBA6Instruction(){OpCode="CB A6", Symble="RES", Operand= "4,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xA7 ,new RESCBA7Instruction(){OpCode="CB A7", Symble="RES", Operand= "4,A",Length=2 });
							MultipleOpCodeConfig.Add(0xA8 ,new RESCBA8Instruction(){OpCode="CB A8", Symble="RES", Operand= "5,B",Length=2 });
							MultipleOpCodeConfig.Add(0xA9 ,new RESCBA9Instruction(){OpCode="CB A9", Symble="RES", Operand= "5,C",Length=2 });
							MultipleOpCodeConfig.Add(0xAA ,new RESCBAAInstruction(){OpCode="CB AA", Symble="RES", Operand= "5,D",Length=2 });
							MultipleOpCodeConfig.Add(0xAB ,new RESCBABInstruction(){OpCode="CB AB", Symble="RES", Operand= "5,E",Length=2 });
							MultipleOpCodeConfig.Add(0xAC ,new RESCBACInstruction(){OpCode="CB AC", Symble="RES", Operand= "5,H",Length=2 });
							MultipleOpCodeConfig.Add(0xAD ,new RESCBADInstruction(){OpCode="CB AD", Symble="RES", Operand= "5,L",Length=2 });
							MultipleOpCodeConfig.Add(0xAE ,new RESCBAEInstruction(){OpCode="CB AE", Symble="RES", Operand= "5,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xAF ,new RESCBAFInstruction(){OpCode="CB AF", Symble="RES", Operand= "5,A",Length=2 });
							MultipleOpCodeConfig.Add(0xB0 ,new RESCBB0Instruction(){OpCode="CB B0", Symble="RES", Operand= "6,B",Length=2 });
							MultipleOpCodeConfig.Add(0xB1 ,new RESCBB1Instruction(){OpCode="CB B1", Symble="RES", Operand= "6,C",Length=2 });
							MultipleOpCodeConfig.Add(0xB2 ,new RESCBB2Instruction(){OpCode="CB B2", Symble="RES", Operand= "6,D",Length=2 });
							MultipleOpCodeConfig.Add(0xB3 ,new RESCBB3Instruction(){OpCode="CB B3", Symble="RES", Operand= "6,E",Length=2 });
							MultipleOpCodeConfig.Add(0xB4 ,new RESCBB4Instruction(){OpCode="CB B4", Symble="RES", Operand= "6,H",Length=2 });
							MultipleOpCodeConfig.Add(0xB5 ,new RESCBB5Instruction(){OpCode="CB B5", Symble="RES", Operand= "6,L",Length=2 });
							MultipleOpCodeConfig.Add(0xB6 ,new RESCBB6Instruction(){OpCode="CB B6", Symble="RES", Operand= "6,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xB7 ,new RESCBB7Instruction(){OpCode="CB B7", Symble="RES", Operand= "6,A",Length=2 });
							MultipleOpCodeConfig.Add(0xB8 ,new RESCBB8Instruction(){OpCode="CB B8", Symble="RES", Operand= "7,B",Length=2 });
							MultipleOpCodeConfig.Add(0xB9 ,new RESCBB9Instruction(){OpCode="CB B9", Symble="RES", Operand= "7,C",Length=2 });
							MultipleOpCodeConfig.Add(0xBA ,new RESCBBAInstruction(){OpCode="CB BA", Symble="RES", Operand= "7,D",Length=2 });
							MultipleOpCodeConfig.Add(0xBB ,new RESCBBBInstruction(){OpCode="CB BB", Symble="RES", Operand= "7,E",Length=2 });
							MultipleOpCodeConfig.Add(0xBC ,new RESCBBCInstruction(){OpCode="CB BC", Symble="RES", Operand= "7,H",Length=2 });
							MultipleOpCodeConfig.Add(0xBD ,new RESCBBDInstruction(){OpCode="CB BD", Symble="RES", Operand= "7,L",Length=2 });
							MultipleOpCodeConfig.Add(0xBE ,new RESCBBEInstruction(){OpCode="CB BE", Symble="RES", Operand= "7,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xBF ,new RESCBBFInstruction(){OpCode="CB BF", Symble="RES", Operand= "7,A",Length=2 });
							MultipleOpCodeConfig.Add(0xC0 ,new SETCBC0Instruction(){OpCode="CB C0", Symble="SET", Operand= "0,B",Length=2 });
							MultipleOpCodeConfig.Add(0xC1 ,new SETCBC1Instruction(){OpCode="CB C1", Symble="SET", Operand= "0,C",Length=2 });
							MultipleOpCodeConfig.Add(0xC2 ,new SETCBC2Instruction(){OpCode="CB C2", Symble="SET", Operand= "0,D",Length=2 });
							MultipleOpCodeConfig.Add(0xC3 ,new SETCBC3Instruction(){OpCode="CB C3", Symble="SET", Operand= "0,E",Length=2 });
							MultipleOpCodeConfig.Add(0xC4 ,new SETCBC4Instruction(){OpCode="CB C4", Symble="SET", Operand= "0,H",Length=2 });
							MultipleOpCodeConfig.Add(0xC5 ,new SETCBC5Instruction(){OpCode="CB C5", Symble="SET", Operand= "0,L",Length=2 });
							MultipleOpCodeConfig.Add(0xC6 ,new SETCBC6Instruction(){OpCode="CB C6", Symble="SET", Operand= "0,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xC7 ,new SETCBC7Instruction(){OpCode="CB C7", Symble="SET", Operand= "0,A",Length=2 });
							MultipleOpCodeConfig.Add(0xC8 ,new SETCBC8Instruction(){OpCode="CB C8", Symble="SET", Operand= "1,B",Length=2 });
							MultipleOpCodeConfig.Add(0xC9 ,new SETCBC9Instruction(){OpCode="CB C9", Symble="SET", Operand= "1,C",Length=2 });
							MultipleOpCodeConfig.Add(0xCA ,new SETCBCAInstruction(){OpCode="CB CA", Symble="SET", Operand= "1,D",Length=2 });
							MultipleOpCodeConfig.Add(0xCB ,new SETCBCBInstruction(){OpCode="CB CB", Symble="SET", Operand= "1,E",Length=2 });
							MultipleOpCodeConfig.Add(0xCC ,new SETCBCCInstruction(){OpCode="CB CC", Symble="SET", Operand= "1,H",Length=2 });
							MultipleOpCodeConfig.Add(0xCD ,new SETCBCDInstruction(){OpCode="CB CD", Symble="SET", Operand= "1,L",Length=2 });
							MultipleOpCodeConfig.Add(0xCE ,new SETCBCEInstruction(){OpCode="CB CE", Symble="SET", Operand= "1,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xCF ,new SETCBCFInstruction(){OpCode="CB CF", Symble="SET", Operand= "1,A",Length=2 });
							MultipleOpCodeConfig.Add(0xD0 ,new SETCBD0Instruction(){OpCode="CB D0", Symble="SET", Operand= "2,B",Length=2 });
							MultipleOpCodeConfig.Add(0xD1 ,new SETCBD1Instruction(){OpCode="CB D1", Symble="SET", Operand= "2,C",Length=2 });
							MultipleOpCodeConfig.Add(0xD2 ,new SETCBD2Instruction(){OpCode="CB D2", Symble="SET", Operand= "2,D",Length=2 });
							MultipleOpCodeConfig.Add(0xD3 ,new SETCBD3Instruction(){OpCode="CB D3", Symble="SET", Operand= "2,E",Length=2 });
							MultipleOpCodeConfig.Add(0xD4 ,new SETCBD4Instruction(){OpCode="CB D4", Symble="SET", Operand= "2,H",Length=2 });
							MultipleOpCodeConfig.Add(0xD5 ,new SETCBD5Instruction(){OpCode="CB D5", Symble="SET", Operand= "2,L",Length=2 });
							MultipleOpCodeConfig.Add(0xD6 ,new SETCBD6Instruction(){OpCode="CB D6", Symble="SET", Operand= "2,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xD7 ,new SETCBD7Instruction(){OpCode="CB D7", Symble="SET", Operand= "2,A",Length=2 });
							MultipleOpCodeConfig.Add(0xD8 ,new SETCBD8Instruction(){OpCode="CB D8", Symble="SET", Operand= "3,B",Length=2 });
							MultipleOpCodeConfig.Add(0xD9 ,new SETCBD9Instruction(){OpCode="CB D9", Symble="SET", Operand= "3,C",Length=2 });
							MultipleOpCodeConfig.Add(0xDA ,new SETCBDAInstruction(){OpCode="CB DA", Symble="SET", Operand= "3,D",Length=2 });
							MultipleOpCodeConfig.Add(0xDB ,new SETCBDBInstruction(){OpCode="CB DB", Symble="SET", Operand= "3,E",Length=2 });
							MultipleOpCodeConfig.Add(0xDC ,new SETCBDCInstruction(){OpCode="CB DC", Symble="SET", Operand= "3,H",Length=2 });
							MultipleOpCodeConfig.Add(0xDD ,new SETCBDDInstruction(){OpCode="CB DD", Symble="SET", Operand= "3,L",Length=2 });
							MultipleOpCodeConfig.Add(0xDE ,new SETCBDEInstruction(){OpCode="CB DE", Symble="SET", Operand= "3,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xDF ,new SETCBDFInstruction(){OpCode="CB DF", Symble="SET", Operand= "3,A",Length=2 });
							MultipleOpCodeConfig.Add(0xE0 ,new SETCBE0Instruction(){OpCode="CB E0", Symble="SET", Operand= "4,B",Length=2 });
							MultipleOpCodeConfig.Add(0xE1 ,new SETCBE1Instruction(){OpCode="CB E1", Symble="SET", Operand= "4,C",Length=2 });
							MultipleOpCodeConfig.Add(0xE2 ,new SETCBE2Instruction(){OpCode="CB E2", Symble="SET", Operand= "4,D",Length=2 });
							MultipleOpCodeConfig.Add(0xE3 ,new SETCBE3Instruction(){OpCode="CB E3", Symble="SET", Operand= "4,E",Length=2 });
							MultipleOpCodeConfig.Add(0xE4 ,new SETCBE4Instruction(){OpCode="CB E4", Symble="SET", Operand= "4,H",Length=2 });
							MultipleOpCodeConfig.Add(0xE5 ,new SETCBE5Instruction(){OpCode="CB E5", Symble="SET", Operand= "4,L",Length=2 });
							MultipleOpCodeConfig.Add(0xE6 ,new SETCBE6Instruction(){OpCode="CB E6", Symble="SET", Operand= "4,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xE7 ,new SETCBE7Instruction(){OpCode="CB E7", Symble="SET", Operand= "4,A",Length=2 });
							MultipleOpCodeConfig.Add(0xE8 ,new SETCBE8Instruction(){OpCode="CB E8", Symble="SET", Operand= "5,B",Length=2 });
							MultipleOpCodeConfig.Add(0xE9 ,new SETCBE9Instruction(){OpCode="CB E9", Symble="SET", Operand= "5,C",Length=2 });
							MultipleOpCodeConfig.Add(0xEA ,new SETCBEAInstruction(){OpCode="CB EA", Symble="SET", Operand= "5,D",Length=2 });
							MultipleOpCodeConfig.Add(0xEB ,new SETCBEBInstruction(){OpCode="CB EB", Symble="SET", Operand= "5,E",Length=2 });
							MultipleOpCodeConfig.Add(0xEC ,new SETCBECInstruction(){OpCode="CB EC", Symble="SET", Operand= "5,H",Length=2 });
							MultipleOpCodeConfig.Add(0xED ,new SETCBEDInstruction(){OpCode="CB ED", Symble="SET", Operand= "5,L",Length=2 });
							MultipleOpCodeConfig.Add(0xEE ,new SETCBEEInstruction(){OpCode="CB EE", Symble="SET", Operand= "5,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xEF ,new SETCBEFInstruction(){OpCode="CB EF", Symble="SET", Operand= "5,A",Length=2 });
							MultipleOpCodeConfig.Add(0xF0 ,new SETCBF0Instruction(){OpCode="CB F0", Symble="SET", Operand= "6,B",Length=2 });
							MultipleOpCodeConfig.Add(0xF1 ,new SETCBF1Instruction(){OpCode="CB F1", Symble="SET", Operand= "6,C",Length=2 });
							MultipleOpCodeConfig.Add(0xF2 ,new SETCBF2Instruction(){OpCode="CB F2", Symble="SET", Operand= "6,D",Length=2 });
							MultipleOpCodeConfig.Add(0xF3 ,new SETCBF3Instruction(){OpCode="CB F3", Symble="SET", Operand= "6,E",Length=2 });
							MultipleOpCodeConfig.Add(0xF4 ,new SETCBF4Instruction(){OpCode="CB F4", Symble="SET", Operand= "6,H",Length=2 });
							MultipleOpCodeConfig.Add(0xF5 ,new SETCBF5Instruction(){OpCode="CB F5", Symble="SET", Operand= "6,L",Length=2 });
							MultipleOpCodeConfig.Add(0xF6 ,new SETCBF6Instruction(){OpCode="CB F6", Symble="SET", Operand= "6,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xF7 ,new SETCBF7Instruction(){OpCode="CB F7", Symble="SET", Operand= "6,A",Length=2 });
							MultipleOpCodeConfig.Add(0xF8 ,new SETCBF8Instruction(){OpCode="CB F8", Symble="SET", Operand= "7,B",Length=2 });
							MultipleOpCodeConfig.Add(0xF9 ,new SETCBF9Instruction(){OpCode="CB F9", Symble="SET", Operand= "7,C",Length=2 });
							MultipleOpCodeConfig.Add(0xFA ,new SETCBFAInstruction(){OpCode="CB FA", Symble="SET", Operand= "7,D",Length=2 });
							MultipleOpCodeConfig.Add(0xFB ,new SETCBFBInstruction(){OpCode="CB FB", Symble="SET", Operand= "7,E",Length=2 });
							MultipleOpCodeConfig.Add(0xFC ,new SETCBFCInstruction(){OpCode="CB FC", Symble="SET", Operand= "7,H",Length=2 });
							MultipleOpCodeConfig.Add(0xFD ,new SETCBFDInstruction(){OpCode="CB FD", Symble="SET", Operand= "7,L",Length=2 });
							MultipleOpCodeConfig.Add(0xFE ,new SETCBFEInstruction(){OpCode="CB FE", Symble="SET", Operand= "7,(HL)",Length=2 });
							MultipleOpCodeConfig.Add(0xFF ,new SETCBFFInstruction(){OpCode="CB FF", Symble="SET", Operand= "7,A",Length=2 });
								}
	}

	public class RegisterMapper
	{
		public static Dictionary<string,short> RegisterCodeMapper = new Dictionary<string,short>();

		static RegisterMapper()
		{
	RegisterCodeMapper.Add("A",0x07);
				RegisterCodeMapper.Add("B",0x00);
				RegisterCodeMapper.Add("C",0x01);
				RegisterCodeMapper.Add("D",0x02);
				RegisterCodeMapper.Add("E",0x03);
				RegisterCodeMapper.Add("H",0x04);
				RegisterCodeMapper.Add("L",0x06);
						}
	}
}

